a11y: Simplify the ATContext::state-change signal
authorEmmanuele Bassi <ebassi@gnome.org>
Tue, 25 Aug 2020 15:34:04 +0000 (16:34 +0100)
committerEmmanuele Bassi <ebassi@gnome.org>
Tue, 25 Aug 2020 15:36:08 +0000 (16:36 +0100)
We cannot pass all the data we pass to the virtual function, because the
types are private, but the class and the signal are public API.

The signal is just a notification, so we can decouple the virtual
function (which stays the same, for internal types that implement the
ATContext API contract) from the signal.

gtk/gtkatcontext.c

index e1e2edd59914ab2b9ace767ea24b6734cff7363c..6686e3f9a93a9b9108959b512ced6a0971acbf6d 100644 (file)
@@ -175,12 +175,6 @@ gtk_at_context_class_init (GtkATContextClass *klass)
   /**
    * GtkATContext::state-change:
    * @self: the #GtkATContext
-   * @changed_states: flags for the changed states
-   * @changed_properties: flags for the changed properties
-   * @changed_relations: flags for the changed relations
-   * @states: the new states
-   * @properties: the new properties
-   * @relations: the new relations
    *
    * Emitted when the attributes of the accessible for the
    * #GtkATContext instance change.
@@ -189,12 +183,10 @@ gtk_at_context_class_init (GtkATContextClass *klass)
     g_signal_new ("state-change",
                   G_TYPE_FROM_CLASS (gobject_class),
                   G_SIGNAL_RUN_FIRST,
-                  G_STRUCT_OFFSET (GtkATContextClass, state_change),
+                  0,
                   NULL, NULL,
                   NULL,
-                  G_TYPE_NONE, 6,
-                  G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT,
-                  G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER);
+                  G_TYPE_NONE, 0);
 
   g_object_class_install_properties (gobject_class, N_PROPS, obj_props);
 }
@@ -438,9 +430,10 @@ gtk_at_context_update (GtkATContext *self)
   GtkAccessibleRelationChange changed_relations =
     gtk_accessible_attribute_set_get_changed (self->relations);
 
-  g_signal_emit (self, obj_signals[STATE_CHANGE], 0,
-                 changed_states, changed_properties, changed_relations,
-                 self->states, self->properties, self->relations);
+  GTK_AT_CONTEXT_GET_CLASS (self)->state_change (self,
+                                                 changed_states, changed_properties, changed_relations,
+                                                 self->states, self->properties, self->relations);
+  g_signal_emit (self, obj_signals[STATE_CHANGE], 0);
 
   self->updated_properties = 0;
   self->updated_relations = 0;